package main

import "fmt"

func main() {
	c := make(chan int)

	go func() {
		for i := 0; i < 5; i++ {
			c <- i
		}
		// 传输完数据关闭channel，防止main一致阻塞在
		close(c)
	}()

	//for {
	//	// ok为true说明channel没有关闭，为false说明管道已经关闭
	//	if data, ok := <-c; ok {
	//		fmt.Println(data)
	//	} else {
	//		break
	//	}
	//}

	// c中有数据，range返回数据；c中无数据，range阻塞等待；c关闭了，range结束
	// 与上一个代码块等价
	for data := range c {
		fmt.Println(data)
	}

	fmt.Println("main  结束")
}
